package br.com.toscano.gobra.view;

import java.util.ArrayList;

import javax.inject.Inject;

import br.com.toscano.gobra.business.TipoObraBC;
import br.com.toscano.gobra.domain.ExigenciaTipoObra;
import br.com.toscano.gobra.domain.TipoObra;
import br.gov.frameworkdemoiselle.annotation.PreviousView;
import br.gov.frameworkdemoiselle.stereotype.ViewController;
import br.gov.frameworkdemoiselle.template.AbstractEditPageBean;
import br.gov.frameworkdemoiselle.transaction.Transactional;

@ViewController
@PreviousView("./tipoObra_list.jsf")
public class TipoObraEditMB extends AbstractEditPageBean<TipoObra, Long> {

	private static final long serialVersionUID = 1L;

	private String codigoExigencia;
	private String descricaoExigencia;
	private String obrigatorio = "S";
	private Integer posicao;

	@Inject
	private TipoObraBC tipoObraBC;
	
	@Override
	@Transactional
	public String delete() {
		this.tipoObraBC.delete(getId());
		return getPreviousView();
	}
	
	@Override
	@Transactional
	public String insert() {
		this.tipoObraBC.insert(getBean());
		return getPreviousView();
	}
	
	@Override
	@Transactional
	public String update() {
		this.tipoObraBC.update(getBean());
		return getPreviousView();
	}

	@Override
	protected TipoObra handleLoad(Long id) {
		setBean(this.tipoObraBC.load(id));
		return getBean();
	}

	public String getCodigoExigencia() {
		return codigoExigencia;
	}

	public void setCodigoExigencia(String codigoExigencia) {
		this.codigoExigencia = codigoExigencia;
	}

	public String getDescricaoExigencia() {
		return descricaoExigencia;
	}

	public void setDescricaoExigencia(String descricaoExigencia) {
		this.descricaoExigencia = descricaoExigencia;
	}

	public String getObrigatorio() {
		if (obrigatorio == null) return "S"; 
		return obrigatorio;
	}

	public void setObrigatorio(
			String obrigatorio) {
		this.obrigatorio = obrigatorio;
	}

	public Integer getPosicao() {
		return posicao;
	}

	public void setPosicao(Integer posicao) {
		this.posicao = posicao;
	}
	
	public void adicionarExigencia() {
		
		ExigenciaTipoObra exigencia = new ExigenciaTipoObra();
		exigencia.setCodigoExigencia(this.getCodigoExigencia());
		exigencia.setDescricao(this.getDescricaoExigencia());
		exigencia.setTipoObra(this.getBean());
		exigencia.setObrigatorio(this.getObrigatorio());

		if (this.getBean().getListaExigenciaTipoObra() == null) {
			this.getBean().setListaExigenciaTipoObra(new ArrayList<ExigenciaTipoObra>());
		}
		this.getBean().getListaExigenciaTipoObra().add(exigencia);

		this.setCodigoExigencia(null);
		this.setDescricaoExigencia(null);
		this.setObrigatorio("S");
	}

	public void removerExigencia() {
		if (this.posicao != null) {
			this.getBean().getListaExigenciaTipoObra().remove(this.posicao.intValue());
		}
	}

}